package com.ydd.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ydd.constant.MessageConstant;
import com.ydd.dto.PageUserListDto;
import com.ydd.entity.YddUser;
import com.ydd.mapper.YddUserMapper;
import com.ydd.result.Result;
import com.ydd.service.YddUserListService;
import com.ydd.vo.YddUserPageVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class YddUserListListServiceImpl implements YddUserListService {

    @Autowired
    YddUserMapper yddUserMapper;


    /**
     * 用户列表
     *
     * @param dto
     * @return
     */
    @Override
    public Result yddUserPage(PageUserListDto dto) {
        //默认值
        if (dto.getPage() == null){
            dto.setPage("1");
        }
        if (dto.getLimit() == null){
            dto.setLimit("5");
        }

        // 创建分页对象
        Page<YddUser> page = new Page<>(Integer.valueOf(dto.getPage()),Integer.valueOf(dto.getLimit()));
        //添加条件判断
        LambdaQueryWrapper<YddUser> yddUserLambdaQueryWrapper = Wrappers.lambdaQuery();
        if (dto.getUsername() != null && dto.getUsername() != ""){
        yddUserLambdaQueryWrapper.like(YddUser::getUsername,dto.getUsername());
        }
        if (dto.getSex() != null && dto.getSex() != ""){
            yddUserLambdaQueryWrapper.eq(YddUser::getSex,dto.getSex());
        }
        if (dto.getMobile() != null && dto.getMobile() != ""){
            yddUserLambdaQueryWrapper.eq(YddUser::getMobile,dto.getMobile());
        }

        yddUserMapper.selectPage(page,yddUserLambdaQueryWrapper);

        //获取总数
        long countL = page.getTotal();
        int count = (int) countL;

        //获取总页数
        long totalPagesL = page.getPages();
        int totalPages = (int) totalPagesL;

        //获取每页数量
        long pageSizeL = page.getSize();
        int pageSize = (int) pageSizeL;

        //获取当前页码
        long currentPageL = page.getCurrent();
        int currentPage = (int) currentPageL;

        //页面数据
        List<YddUser> data = page.getRecords();


        YddUserPageVo vo = YddUserPageVo.builder()
                .count(count)
                .totalPages(totalPages)
                .pageSize(pageSize)
                .currentPage(currentPage)
                .data(data)
                .build();


        return Result.success(vo);

    }

    /**
     * 用户添加
     *
     * @param dto
     * @return
     */
    @Override
    public Result addUser(YddUser dto) {
        //用户添加
        yddUserMapper.insert(dto);
        return Result.success();
    }

    /**
     * 用户删除
     *
     * @param id
     * @return
     */
    @Override
    public Result del(String id) {
        if (id == null){
            return Result.error(MessageConstant.ID_EXISTS_FOUND);
        }
        //类型转换
        int userId = Integer.parseInt(id);
        //调用dao删除数据
        yddUserMapper.deleteById(userId);
        return Result.success();
    }

    /**
     * 用户修改
     *
     * @param yddUser
     * @return
     */
    @Override
    public Result update(YddUser yddUser) {
        //创建条件对象
        LambdaQueryWrapper<YddUser> yddUserLambdaQueryWrapper = Wrappers.lambdaQuery();
        //添加条件
        yddUserLambdaQueryWrapper.eq(YddUser::getId,yddUser.getId());
        yddUserMapper.update(yddUser,yddUserLambdaQueryWrapper);
        return Result.success();
    }
}











